#include<stdio.h>
#include<unistd.h>
#include<stdlib.h>

typedef void(*callback)();

#define N 3

void Worker()
{
    int cnt = 3;

    while(cnt--)
    {
        printf("I am a process , pid = %d , ppid = %d , cnt = %d\n",getpid(),getppid(),cnt);
        sleep(1);
    }

}

void CreateSubProcess(int n,callback cb)
{
    for(int i = 0; i < n ; i++)
    {
        sleep(1);

        int id = fork();
        if(id == 0)
        {
            printf("Create Child Process Success\n");
            cb();
            exit(0);
        }
    }
}

int main()
{
    CreateSubProcess(N,Worker);
    sleep(100);

    return 0;
}




//#include<stdio.h>
//#include<unistd.h>
//#include<stdlib.h>
//
//#define N 5
//
//void Worker()
//{
//    int cnt = 5;
//
//    while(cnt--)
//    {
//        printf("I am a process , pid = %d , ppid = %d , cnt = %d\n",getpid(),getppid(),cnt);
//        sleep(1);
//    }
//
//}
//
//int main()
//{
//    for(int i = 0; i < N ; i++)
//    {
//        sleep(1);
//
//        int id = fork();
//        if(id == 0)
//        {
//            printf("Create Child Process Success\n");
//            Worker();
//            exit(0);
//        }
//    }
//
//    sleep(100);
//
//    return 0;
//}
